home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.plugin;
-
- import com.extensibility.plugin.api.ApplicationAccess;
- import java.io.File;
- import java.lang.reflect.Method;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
-
- public class PluginRegistry {
- public static final int API_VERSION_1_1 = 65537;
- public static final int API_VERSION_1_2 = 65538;
- private static Class[] methodParams;
- private static PluginRegistry globalRegistry;
- private int apiVersion = 0;
- private Hashtable apiListing = new Hashtable();
- private PluginClassLoader loader = new PluginClassLoader();
- private ApplicationAccess appAccess = null;
- // $FF: synthetic field
- private static Class class$Lcom$extensibility$plugin$PluginRegistry;
-
- public static PluginRegistry getRegistry() {
- if (globalRegistry == null) {
- globalRegistry = new PluginRegistry();
- }
-
- return globalRegistry;
- }
-
- public static void setRegistry(PluginRegistry var0) {
- globalRegistry = var0;
- }
-
- public void registerPluginsInFolder(File var1) {
- if (var1.isDirectory()) {
- 1 var10001 = new 1;
- if (this == null) {
- throw null;
- } else {
- var10001.<init>(this);
- String[] var2 = var1.list(var10001);
- Vector var3 = this.loadJars(var1, var2);
- this.callMainClasses(var3);
- }
- }
- }
-
- public boolean registerPlugin(String var1, Class var2, String var3, int var4) {
- if (var4 > this.apiVersion) {
- return false;
- } else {
- Object var5 = this.apiListing.get(var1);
- Vector var6;
- if (var5 == null) {
- var6 = new Vector();
- this.apiListing.put(var1, var6);
- } else {
- var6 = (Vector)var5;
- }
-
- var6.addElement(var2);
- return true;
- }
- }
-
- public int getPluginApiCount(String var1) {
- Object var2 = this.apiListing.get(var1);
- int var3 = 0;
- if (var2 != null) {
- Vector var4 = (Vector)var2;
- var3 = var4.size();
- }
-
- return var3;
- }
-
- public Object getNthPlugin(String var1, int var2) {
- Object var3 = this.apiListing.get(var1);
- Object var4 = null;
- if (var3 != null) {
- Vector var5 = (Vector)var3;
- Class var6 = (Class)var5.elementAt(var2);
-
- try {
- if (var6 != null) {
- var4 = var6.newInstance();
- }
- } catch (Exception var8) {
- }
- }
-
- return var4;
- }
-
- public ApplicationAccess getAppAccess() {
- return this.appAccess;
- }
-
- public void setAppAccess(ApplicationAccess var1) {
- this.appAccess = var1;
- }
-
- protected void callMainClasses(Vector var1) {
- Enumeration var2 = var1.elements();
-
- while(var2.hasMoreElements()) {
- String var3 = (String)var2.nextElement();
-
- try {
- Class var4 = this.loader.loadClass(var3, true);
- Method var5 = var4.getDeclaredMethod("registerPlugin", methodParams);
- Object[] var6 = new Object[]{this};
- var5.invoke((Object)null, var6);
- } catch (LinkageError var7) {
- } catch (Exception var8) {
- }
- }
-
- }
-
- protected Vector loadJars(File var1, String[] var2) {
- Vector var3 = new Vector();
- var3.ensureCapacity(var2.length);
-
- for(int var4 = 0; var4 < var2.length; ++var4) {
- File var5 = new File(var1, var2[var4]);
- String var6 = null;
- if (var5.isFile()) {
- try {
- var6 = this.loader.enumerateClasses(var5);
- } catch (Exception var8) {
- }
- }
-
- if (var6 != null) {
- var3.addElement(var6);
- }
- }
-
- return var3;
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- protected PluginRegistry() {
- String var1 = System.getProperty("java.specification.version");
- if (var1 == null) {
- this.apiVersion = 65537;
- } else {
- Float var2 = new Float(var1);
- this.apiVersion = (int)(var2 * 65536.0F);
- }
-
- }
-
- static {
- methodParams = new Class[]{class$Lcom$extensibility$plugin$PluginRegistry != null ? class$Lcom$extensibility$plugin$PluginRegistry : (class$Lcom$extensibility$plugin$PluginRegistry = class$("com.extensibility.plugin.PluginRegistry"))};
- }
- }
-